// main.js（后端）    浏览器（客户端）  index.ejs（前端）   login.ejs（前端）


// npm i express    渲染        （用于展示动态页面）
// npm i ejs        模板响应文件        （nodejs中的ejs文件，相当于前端html页面    main.js文件是后端）
// npm i echarts    数据可视化图库       位置node_modules/echarts/dist/echarts.min.js
// npm i express-session    //  cookie会话存储


// require（模块名）      nodejs中导入模块

// express.static()   //  静态资源（创建public文件）


// path模块     用来处理和转换文件路径
// （拼接路径：将   路径片段    拼接成  完整路径）
// （解析路径：将   相对路径    解析为  绝对路径）
// path.dirname()   获取路径中的文件名
// path.join(__dirname, "views")当前目录下的绝对路径

// res.send('')     向浏览器（客户端）发送响应

// 获取前端动态数据，传入到后端 express 模板中
// res.render('index', {})      用于渲染模板文件    并将获取到的前端动态数据    传入给浏览器（客户端）


// res.render('index', data) 方法会把 data 对象中的数据填充到名为 index.ejs 的模板文件里，
// 生成最终的 HTML 页面并发送给客户端。
// ----------------------------------------------------------------------------------------------------------



console.log("主入口文件");






// 导入 express 模块
const express = require("express");
// 导入 path    路径模块
const path = require("path");
// 导入用户会话模块
const session = require("express-session");
const { PassThrough } = require("stream");




// 创建 express 实例
const app = express();




// 设置ejs为引擎模板
app.set('view engine', 'ejs');
// 设置前端页面文件目录    path.join(__dirname, "views")当前目录下的绝对路径
app.set('views', path.join(__dirname, "../views"));     //  ../不能省略，不然找不到
// 配置静态资源目录
app.use(express.static(path.join(__dirname, "../public")));     //  ../不能省略，不然找不到


// 配置express-session中间件
app.use(session({
    secret: 'xhzmmsd',          // 用于签名 session ID 的字符串
    resave: false,            // 强制 session 保存即使没有变化
    saveUninitialized: false, // 强制保存未初始化的 session
    cookie: { secure: false } // 设置 cookie 的安全属性
}));




// 定义路由，处理登录（/login）的 GET 请求
app.get('/login', (req, res) => {
    // 将请求来的动态数据   传入后端模板
    res.render('login.ejs', { name: '登录' });
});




// 定义路由，处理首页（/）的 GET 请求
app.get('/', (req, res) => {
    // 将请求来的动态数据   传入后端模板
    res.render('index.ejs', { name: '首页' });
})




// 启动服务器，监听指定端口
const port = 3000
app.listen(port, () => {
    console.log(`服务运行在 http://localhost:${port}`);
});













